发布测试环境
配置测试机
创建work账号
处于安全考虑,日常不会用root账号登录,权限太高了。
用root登录,创建work账号
adduser work
passwd work
添加work的sudo权限
whereis sudoers # 找到文件位置 /etc/sudoers
chmod u+w /etc/sudoers # 修改权限, u 表示所有者, w 表示写权限 + 表示添加
vim /etc/sudoers # 编辑该文件
# 找到 `root ALL=(ALL) ALL`
# 再加一行 `work ALL=(ALL) ALL`
chmod u-w /etc/sudoers
然后使用work登录机器。输入su
,在输入root账号的密码,即可拥有超级权限。
登录信任
使用work登录机器,创建~/.ssh/authorized_keys
文件。
# 修改文件夹权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
将本机的id_rsa.pub
内容粘贴进来。
退出重新用work登录,将不用在输入密码。
安装必备软件
以下都需要su
权限
git
yum -y install git
git --version
docker
- 安装docker
- docker镜像加速
- 安装docker-compose
docker version
docker-compose --version
开放端口
开放需要的端口,否则外网无法访问该端口
- B端 FE - 80
- B端 server - 8081
- C端 - 8082
- 统计服务,收集日志 - 8083
- 统计服务 OpenAPI - 8080
- admin FE - 8085
- admin server - 8084
发布到测试机
梳理思路
- 使用github actions监听dev分支push
- 登录测试机,获取最新dev分支代码
- 重新构建镜像
docker-compose build editor-server
- 重启所有容器
docker-compose up -d
代码演示
新建deploy-dev.yml
内容如下:
name: deploy for dev
on:
push:
branches:
- 'dev' # 只针对 dev 分支
paths:
- '.github/workflows/*'
# - '__test__/**' # dev 不需要立即测试
- 'src/**'
- 'Dockerfile'
- 'docker-compose.yml'
- 'bin/*'
jobs:
deploy-dev:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: set ssh key # 临时设置 ssh key
run: |
mkdir -p ~/.ssh/
# secrets.WFP_ID_RSA github里面设置的
echo "${{secrets.WFP_ID_RSA}}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan "182.92.xxx.xxx" >> ~/.ssh/known_hosts
- name: deploy # 部署
run: |
ssh work@182.92.xxx.xxx "
# 【注意】用 work 账号登录,手动创建 /home/work/imooc-lego 目录
# 然后 git clone https://username:password@github.com/imooc-lego/biz-editor-server.git -b dev (私有仓库,使用 github 用户名和密码)
# 记得删除 origin ,否则会暴露 github 密码
cd /home/work/imooc-lego/biz-editor-server;
git remote add origin https://wangfupeng1988:${{secrets.WFP_PASSWORD}}@github.com/imooc-lego/biz-editor-server.git;
git checkout dev;
git pull origin dev; # 重新下载最新代码
git remote remove origin; # 删除 origin ,否则会暴露 github 密码
# 启动 docker
docker-compose build editor-server; # 和 docker-compose.yml service 名字一致
docker-compose up -d;
"
- name: delete ssh key # 删除 ssh key
run: rm -rf ~/.ssh/id_rsa
远程接口测试
待测试机部署完成,即可进行远程接口测试npm run test:remote
,即test.yml
的内容
注意,一定要等待测试机部署完成,否则测试不通过